package modelado.estados;

import java.util.Set;
import java.util.SortedSet;

import modelado.datos.elementos.Elemento;
import modelado.soluciones.SolucionListaImpl;
import utiles.FactoriaDeColecciones;

public abstract class EstadoAbstracto extends SolucionListaImpl implements
		Estado {
	private Set<Elemento> aceptados;
	private SortedSet<Elemento> activos;

	public EstadoAbstracto(SortedSet<Elemento> s) {
		aceptados = FactoriaDeColecciones.creaSet();
		activos = s;
	}

	public void addElemento(Elemento e) {
		super.addElemento(e);
		aceptados.add(e);
		activos.remove(e);
	}

	public Elemento remove() {
		Elemento e = getLista().remove(getLista().size() - 1);
		aceptados.remove(e);
		activos.add(e);
		return e;
	}
	
	public Set<Elemento> getAceptados() {
		return aceptados;
	}

	public SortedSet<Elemento> getActivos() {
		return activos;
	}

}
